import re

def clean_unicode_text(text: str) -> str:
    """
    清理文本中的非BMP Unicode字符，使其兼容ChromeDriver。
    保留文本的原始格式、特殊符号和中文字符，仅处理不兼容的字符。
    
    Args:
        text: 原始文本
        
    Returns:
        清理后的文本
    """
    if not text:
        return ""
    
    # 保存原始文本用于调试比较
    original_text = text
    
    # 识别是否包含大量中文字符
    chinese_char_count = len(re.findall(r'[\u4e00-\u9fff]', text))
    has_significant_chinese = chinese_char_count > 20  # 如果有大量中文，采用更保守的处理方式
    
    if has_significant_chinese:
        # 对于含有大量中文的文本，仅替换极少数已知会导致问题的字符
        problematic_chars = [
            '\uFFFE', '\uFFFF'  # 非法Unicode
        ]
        for char in problematic_chars:
            text = text.replace(char, ' ')
    else:
        # 非大量中文文本使用原来的方式
        # 匹配所有超出BMP范围的Unicode字符（U+10000及以上）
        cleaned_text = re.sub(r'[\U00010000-\U0010ffff]', ' ', text)
        text = cleaned_text
    
    # 只在调试时打印更详细的清理情况
    if text != original_text:
        print(f"Unicode字符清理前长度: {len(original_text)}, 清理后长度: {len(text)}")
        # 打印清理前后的部分文本，帮助比较差异
        print(f"清理前文本前60个字符: {repr(original_text[:60])}")
        print(f"清理后文本前60个字符: {repr(text[:60])}")
    
    return text 